from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from time import sleep
from pyquery import PyQuery as pq
from urllib import request

'''
url = 'https://www.jd.com/'
url = 'https://search.jd.com/Search?keyword=%E8%8B%B9%E6%9E%9C%E6%89%8B%E6%9C%BA&qrst=1&wq=%E8%8B%B9%E6%9E%9C%E6%89%8B%E6%9C%BA&ev=exbrand_Apple%5E&pvid=ea2abf9eca2a4e818af0890c351125a6&page=1&s=1&click=1'
url = 'https://search.jd.com/Search?keyword=%E8%8B%B9%E6%9E%9C%E6%89%8B%E6%9C%BA&qrst=1&wq=%E8%8B%B9%E6%9E%9C%E6%89%8B%E6%9C%BA&ev=exbrand_Apple%5E&pvid=ea2abf9eca2a4e818af0890c351125a6&page=3&s=56&click=1'
url = 'https://search.jd.com/Search?keyword=%E8%8B%B9%E6%9E%9C%E6%89%8B%E6%9C%BA&qrst=1&wq=%E8%8B%B9%E6%9E%9C%E6%89%8B%E6%9C%BA&ev=exbrand_Apple%5E&pvid=ea2abf9eca2a4e818af0890c351125a6&page=5&s=116&click=1'

page:页码(奇数递增=i*2+1,(i=0,1,2…))
s:1,56,116,176…(page*58+1,(page=0,1,2…))
'''

#爬取的数据
data = []
#url目标
url_list = []
for i in range(2):   #这里改成72就可以爬取整页啦！ 
    url = 'https://search.jd.com/Search?keyword=%E8%8B%B9%E6%9E%9C%E6%89%8B%E6%9C%BA&qrst=1&wq=%E8%8B%B9%E6%9E%9C%E6%89%8B%E6%9C%BA&ev=exbrand_Apple%5E&pvid=ea2abf9eca2a4e818af0890c351125a6&page='+str(i*2+1)+'&s='+str(i*58+1)+'&click=1'
    url_list1 = request.unquote(url) #对url中的加密信息：%E8%8B%B9%E6%9E%9C%E6%89%8B%E6%9C%BA 进行解密
    url_list.append(url)
    sleep(2)
    
    #采用selenium虚拟登录
    #这里用的是Microsoft Edge浏览器，根据版本下载对应驱动器
    browser = webdriver.Edge() #打开浏览器
    #url = input('输入网址：')
    browser.get(url_list[i]) #逐个获取每页商品链接
    
    # 停顿
    wait = WebDriverWait(browser, 1)

#    print('输入关键字')
#    #keywords  = input('输入搜索关键字：')
#    keywords = '苹果手机'
#    #在京东搜索处搜索‘苹果手机’
#    #填充关键字：定位搜索框、send发送关键字到搜索框
#    wait.until(EC.presence_of_element_located((By.ID, 'key'))).send_keys(keywords)
#    #模拟鼠标点击：定位搜索按钮、click点击
#    wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'button'))).click()
    
    #实现 鼠标滚动功能---- 拉到网页最下面
    js = "var q=document.documentElement.scrollTop=5000"  #滚动 0 表示页顶 10000表示页底
    browser.execute_script(js)
    sleep(2)
    js2 = "var q=document.documentElement.scrollTop=10000"
    browser.execute_script(js2)
    sleep(2)

    #获取源代码
    html = browser.page_source
    #源代码转化格式
    doc = pq(html)
    items = doc('.gl-warp.clearfix .gl-item').items() #从整个页面到单个商品

    for item in items:
        p = {    #用法类似于BS4
                '店铺':item.find('.J_im_icon a').text(),
                '价格':item.find('.p-price strong i').text(),
                '评论数':item.find('.p-commit strong a').text(),
                '商品简介':item.find('.p-name-type-2 a').text()
                }
        data.append(p)
    #    print(p)    

 
#导入数据库借口
from pymongo import MongoClient
#创建连接数据库
client = MongoClient()
#创建数据库
database = client['京东']
#创建集合 collection
JD_data = database['JDcollection']
#保存在mongo上  一次性保存
JD_data.insert(data)





